#include"MyString.h"
struct TelephoneInfo
{
    MyStr name;
    MyStr phone;
};
typedef struct TelephoneInfo TelInfo;
struct TelephoneBook
{
    TelInfo info[Size];
    int size;
};
typedef struct TelephoneBook TelBook;

enum data
{
    INSERT=1,
    DELETE,
    MODIFY,
    VIEW,
    DISPLAY,
    EXIT

};

//菜单展示
void display_menu()

{
    printf("\n   电话簿菜单  \n");
    printf("1. 添加新联系人\n");
    printf("2. 删除新联系人\n");
    printf("3. 修改联系人号码\n");
    printf("4. 根据姓名查找联系人\n");
    printf("5. 查看所有用户\n");
    printf("6. 退出\n");

}
//初始化
void init_contact(TelBook *t)
{
    t->size=0;

}
//插入新用户
void insert_contact(TelBook *t)
{   
     if(t->size==Size)
    {
        printf("数组已满，不允许在插入学生数据\n");
        return;
    }
    char newname[10]={0};
    char  newnumber[20]={0};
    printf("输入新联系人姓名：\n");
    scanf("%s",newname);
    printf("请输入联系人电话：\n");
    scanf("%s",newnumber);
    InitMyString(&t->info[t->size].name);
    InitMyString(&t->info[t->size].phone);
    InsertStr(&t->info[t->size].name,newname);
    InsertStr(&t->info[t->size].phone,newnumber);
    t->size++;

}
//删除用户
void delete_contact(TelBook *t)
 {  
    char name[10]={0};
    printf("请输入你要删除联系人的姓名！\n");
    scanf("%s",name);
    for(int i=0;i<t->size;i++)
    {
        if(strcmp(t->info[i].name.str,name)==0)
        {
            t->info[i]=t->info[i+1];
            t->size--;
            i--;
            printf("删除成功！\n");
        }
        else
        {
            printf("没有该用户！\n");
        }
    }   
 }
 //修改用户电话
void modify_contact(TelBook *t)
 {
    char newname[10]={0};
    char newnumber[20]={0};
    printf("请输入你要修改联系人姓名:\n");
    scanf("%s",newname);
    printf("请输入新的电话号码：\n");
    scanf("%s",newnumber);
    for(int i=0;i<t->size;i++)
    {
        if(IsStrEqual(&t->info[i].name,newname))
        {
            InitMyString(&t->info[i].phone);
            InsertStr(&t->info[i].phone,newnumber);
        }
    }
 }
 //根据姓名查看用户
 void  view_contact(TelBook *t)
 {
    char viewname[10]={0};
    printf("请输入你需要查看的联系人姓名：\n");
    scanf("%s",&viewname);
    for(int i=0;i<t->size;i++)
    {
        if(IsStrEqual(&t->info[i].name,viewname))
        {
            printf("该联系人电话为：\n");
            PrintStr(&t->info[i].phone,true);
        }
    }
 
 }
 //查看所有用户
 void display_contact(TelBook *t)
 {
    if(t->size==0)
    {
        printf("电话薄上没有联系人\n");
        return;
    }
    printf("输出所有联系人:\n");
    for(int i=0;i<t->size;i++)
    {
        printf("联系人姓名:");
        PrintStr(&t->info[i].name,true);
        printf("联系人电话:");
        PrintStr(&t->info[i].phone,true);

    }
  
 }

int main()
{  
    int choice=0;
    TelBook t;
    init_contact(&t);
    do{
        display_menu();
        printf("请输入你的选择！\n");
        scanf("%d",&choice);
        switch (choice)
        {
            case INSERT:
                insert_contact(&t);
                break;
            case DELETE:
                delete_contact(&t);
                break;
            case MODIFY:
                modify_contact(&t);
                break;
            case VIEW:
                view_contact(&t);
                break;
            case DISPLAY:
                display_contact(&t);
                break;
            case EXIT:
                break;
           default:
        printf("无效选择！再选一次\n");
                break;
           
        }
    }while(choice!=6);
 
   return 0;
}